package appModels

import (
	"errors"
	"github.com/gogf/gf/util/gvalid"
	"xorm.io/xorm"
)

// 文件夹
type Folder struct {
	Models     `xorm:"extends"`
	Pid        string        `json:"pid" xorm:"varchar(128)"`                     //父ID
	FolderName string        `json:"folder_name" xorm:"varchar(255)"`             //文件夹名称
	Visit      int           `json:"visit" xorm:"tinyint(1) notnull default(1)"`  //访问权限 1公开，2登录，3权限，4,系统管理员
	Roles      []FolderRoles `json:"roles" xorm:"text json"`                      //部门机构拥有角色列表
	Enable     int           `json:"enable" xorm:"tinyint(1) notnull default(1)"` //是否启用 ，1启用 2禁用
	Sort       int           `json:"sort" xorm:"int notnull default(1)"`          //排序
	MVersion   `xorm:"extends"`
	MTime      `xorm:"extends"`
}

type FolderRoles struct {
	AuthGroupId string   `json:"auth_group_id"` //权限组ID
	Roles       []string `json:"roles"`         //部门机构拥有角色列表
}

//添加数据校验
func (this *Folder) AddValid() error {
	rules := []string{
		"Id@required#ID不能为空",
		"FolderName@required#文件夹名称不能为空",
	}
	err := gvalid.CheckStruct(this, rules, nil)
	if err == nil {
		return nil
	} else {
		return errors.New(err.FirstString())
	}
}

//修改数据校验
func (this *Folder) EditValid() error {
	return this.AddValid()
}

//获取模型
func (this *Folder) Model() interface{} {
	return new(Folder)
}

//获取模型切片
func (this *Folder) Slice() interface{} {
	return new([]Folder)
}

//初始化数据
func (this *Folder) Init(db *xorm.Session, guid string, loginUser *UserInfo) error {
	this.Id = guid
	this.Bid = loginUser.User.Bid
	return nil
}

//添加之前调用，判断是否可添加，设置添加条件等
func (this *Folder) AddWhere(db *xorm.Session, loginUser *UserInfo) error {
	return errors.New("您没有权限操作")
}

//删除之前调用，判断是否可删除，设置删除条件等
func (this *Folder) DeleteWhere(db *xorm.Session, loginUser *UserInfo, ids ...string) error {

	return errors.New("您没有权限操作")
}

//修改之前调用，判断是否可修改，设置修改条件
func (this *Folder) EditWhere(db *xorm.Session, loginUser *UserInfo) error {

	return errors.New("您没有权限操作")
}

//查询一条数据条件
func (this *Folder) GetWhere(db *xorm.Session, loginUser *UserInfo, id string) error {
	return errors.New("您没有权限操作")
}

//查询列表条件、查询分页数据条数条件
func (this *Folder) ListWhere(db *xorm.Session, loginUser *UserInfo) error {
	return errors.New("您没有权限操作")
}

//查询分页时条件
func (this *Folder) PaginateWhere(db *xorm.Session, loginUser *UserInfo) error {
	return errors.New("您没有权限操作")
}
